﻿/// <remarks>
///系统名称            :   ITALKI 翻译系统
///模块名称            :   Translate
///文件代码            :   
///功能概述            :   
///创建人              :   Snail
///创建日期            :   2008.08.07
///版本号              :   1.0.0.0
///----------< 修改履历 >---------------------------------------------------------------
///修改日期          修改人              修改内容                           版本号
///------------------------------------------------------------------------------------
/// (C) 2007-2008 上海微语信息技术有限公司  版权所有。保留所有权利。
///------------------------------------------------------------------------------------
///</remarks>

using System.Collections;
using System.Collections.Generic;
using System.Data;
using BLL.WWW_WWW.translate;
using Model.WWW_WWW.translate;


namespace BLF.WWW_WWW.translate
{
    /// <summary>
    /// Translate BLF模块。
    /// </summary>
    public class Translate
    {

        /// <summary>
        /// 获得指定语言的翻译总数百分比。
        /// </summary>
        /// <param name="lang">语言。</param>
        /// <returns>小数。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static float GetLanguagePer(string lang) {
            return new TranslateSystem().GetLanguagePer(lang);
        }

        /// <summary>
        /// 导出指定语言的所有最佳翻译词条。
        /// </summary>
        /// <param name="targetlang">目标语言集合。</param>
        /// <returns>Hashtable键值对。e.x.: CT001=Hello</returns>
        /// 修改日期          修改人           修改内容                版本号
        /// 2008.08.15      Snail           创建该方法             1.0.0.0
        public static DataTable ExportTranslateItems(string[] targetlang)
        {
            return new TranslateSystem().ExportTranslateItems(targetlang);
        }

        /// <summary>
        /// 设置翻译内容为最佳标记。
        /// </summary>
        /// <param name="contentID">翻译内容编号。</param>
        /// <returns>返回受影响的行数。</returns>
        /// 修改日期          修改人           修改内容                版本号
        /// 2008.08.15      Snail           创建该方法             1.0.0.0
        public static int SetGoodFlag(string contentID) {
            return new TranslateSystem().SetGoodFlag(contentID);
        }

        /// <summary>
        /// 批量添加带翻译的条目。
        /// </summary>
        /// <param name="items">Hashtable键值对。e.x.: CT001=Hello</param>
        /// <returns>受影响的行数。</returns>
        /// 2008.08.15      Snail           创建该方法             1.0.0.0
        public static int AddTranslateItem(Hashtable items) {
            return new TranslateSystem().AddTranslateItem(items);
        }

        /// <summary>
        /// 删除一个翻译条目。
        /// </summary>
        /// <param name="itemNo">条目编号。</param>
        /// <returns>返回受影响的行。</returns>
        /// 修改日期          修改人           修改内容                版本号
        /// 2008.08.15      Snail           创建该方法             1.0.0.0
        public static int DeleteTranslateItem(string itemNo) {
            return new TranslateSystem().DeleteTranslateItem(itemNo);
        }

        /// <summary>
        /// 添加一个翻译成员。
        /// </summary>
        /// <param name="memberNo">会员编号。</param>
        /// <param name="isAdmin">是否管理员身份。</param>
        /// <returns>返回受影响的行数。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static int AddTranslateMember(string memberNo, bool isAdmin) {
            return new TranslateSystem().AddTranslateMember(memberNo, isAdmin);
        }

        /// <summary>
        /// 获得一个翻译成员。
        /// </summary>
        /// <param name="memberNo">会员编号。</param>
        /// <returns>TranslateMember对象。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static TranslateMember GetTranslateMember(string memberNo) {
            return new TranslateSystem().GetTranslateMember(memberNo);
        }

        /// <summary>
        /// 添加一个待翻译的条目。
        /// </summary>
        /// <param name="itemNo">条目编号。</param>
        /// <param name="itemText">带翻译的文本。</param>
        /// <returns>返回受影响的行数。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static int AddTranslateItem(string itemNo, string itemText) {
            return new TranslateSystem().AddTranslateItem(itemNo, itemText);
        }


        /// <summary>
        /// 翻译一个条目。
        /// </summary>
        /// <param name="itemNo">条目编号。</param>
        /// <param name="itemText">翻译后的内容。</param>
        /// <param name="targetLang">翻译成的语言。</param>
        /// <param name="feedback">反馈分数。</param>
        /// <param name="isGoodFlag">最佳标记。</param>
        /// <param name="memberNo">翻译人员会员编号。</param>
        /// <returns>返回受影响的行数。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static int AddTranslateContent(string itemNo, string itemText, string targetLang, int feedback,
                                                bool isGoodFlag, string memberNo) {
            return new TranslateSystem().AddTranslateContent(itemNo, itemText, targetLang, feedback, isGoodFlag, memberNo);
        }

        /// <summary>
        /// 发表对一个翻译条目的评论。
        /// </summary>
        /// <param name="itemNo">条目编号。</param>
        /// <param name="targetLang">翻译后的语言。</param>
        /// <param name="comment">评论内容。</param>
        /// <param name="memberNo">评论者会员编号。</param>
        /// <returns>返回受影响的行数。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static int AddTranslateContentComment(string itemNo, string targetLang, string comment, string memberNo) {
            return new TranslateSystem().AddTranslateContentComment(itemNo, targetLang, comment, memberNo);
        }



        /// <summary>
        /// 根据条目编号获得该翻译条目对象以及制定语言的所有翻译内容。
        /// </summary>
        /// <param name="itemNo">条目编号。</param>
        /// <param name="targetLang">翻译成的语言。</param>
        /// <param name="pageIndex">翻译内容开始的索引。</param>
        /// <param name="pageSize">本次选择翻译内容的条数。</param>
        /// <param name="contentList">翻译内容列表。</param>
        /// <param name="recordCount">总条数。</param>
        /// <returns>TranslateItem对象。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static TranslateItem GetTranslatesByLanguage(string itemNo, string targetLang, int pageIndex, int pageSize, out List<TranslateModel> contentList, out int recordCount) {
            return new TranslateSystem().GetTranslatesByLanguage(itemNo, targetLang, pageIndex, pageSize, out contentList, out recordCount);
        }

        /// <summary>
        /// 随机选择一个翻译条目。
        /// </summary>
        /// <param name="targetLang">翻译成的语言。</param>
        /// <param name="contentList">翻译内容集合。</param>
        /// <param name="commentList">评论集合。</param>
        /// <param name="contentCount">翻译内容总条数。</param>
        /// <returns>TranslateItem对象。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static TranslateItem GetTranslateRandom(string targetLang, out List<TranslateModel> contentList, out List<TranslateComment> commentList, out int contentCount) {
            return new TranslateSystem().GetTranslateRandom(targetLang, out contentList, out commentList, out contentCount);
        }


        /// <summary>
        /// 获得指定会员的所有翻译内容。
        /// </summary>
        /// <param name="memberNo">会员编号。</param>
        /// <param name="pageIndex">开始选择的索引。</param>
        /// <param name="pageSize">本次选择的条数。</param>
        /// <param name="contentCount">翻译内容总条数。</param>
        /// <returns>TranslateModel对象的集合。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static List<TranslateModel> GetTranslatesByMember(string memberNo, int pageIndex, int pageSize, out int contentCount) {
            return new TranslateSystem().GetTranslatesByMember(memberNo, pageIndex, pageSize, out contentCount);
        }

        /// <summary>
        /// 为指定的翻译内容评分。
        /// </summary>
        /// <param name="contentID">翻译内容编号。</param>
        /// <param name="value">增加分值。</param>
        /// <param name="memberNo">评分人ID。</param>
        /// <returns>目前分数。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static int AddFeedback(int contentID, int value, string memberNo) {
            return new TranslateSystem().AddFeedback(contentID, value, memberNo);
        }


        /// <summary>
        /// 获得会员翻译分数排行榜。
        /// </summary>
        /// <param name="topN">前N名。</param>
        /// <param name="pageIndex">开始选择的索引。</param>
        /// <param name="pageSize">本次选择的条数。</param>
        /// <returns>TranslateModel集合。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static List<TranslateTopic> GetTopMembers(int topN, int pageIndex, int pageSize) {
            return new TranslateSystem().GetTopMembers(topN, pageIndex, pageSize);
        }


        /// <summary>
        /// 获得最近n天的每天翻译内容新增条目数量。
        /// </summary>
        /// <param name="days">最近n天。</param>
        /// <returns>int[]</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static ArrayList GetNewCount(int days) {
            return new TranslateSystem().GetNewCount(days);
        }


        /// <summary>
        /// 获得指定会员的排名信息。
        /// </summary>
        /// <param name="memberNo">会员编号。</param>
        /// <returns>TranslateModel对象。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        public static TranslateTopic GetMemberRank(string memberNo) {
            return new TranslateSystem().GetMemberRank(memberNo);
        }

        /// <summary>
        /// 获得所有翻译条目。
        /// </summary>
        /// <param name="targetLang">待翻译的语言。</param>
        /// <param name="pageIndex">开始选择的索引。</param>
        /// <param name="pageSize">本次选择的条数。</param>
        /// <param name="contentCount">翻译条目总条数。</param>
        /// <returns>TranslateItem集合。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.20		 Snail				 创建该方法                         1.0.0.0
        public static List<TranslateItem> GetAllTranslateItem(string targetLang, int pageIndex, int pageSize, out int contentCount) {
            return new TranslateSystem().GetAllTranslateItem(targetLang, pageIndex, pageSize,out contentCount);
        }

        /// <summary>
        /// 为整个页面获取所需数据。（-_-！）
        /// </summary>
        /// <param name="memberNo">会员编号。(该参数无法对外解释，-,-)</param>
        /// <param name="newCount">。。。</param>
        /// <param name="memberRank">。。。</param>
        /// <param name="topMembers">。。。</param>
        /// <param name="langSetPer">。。。</param>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.25	   Snail		     创建该方法                         1.0.0.0
        public static void GetDataForPage(string memberNo, out ArrayList newCount, out TranslateTopic memberRank,
                                            out List<TranslateTopic> topMembers, out ArrayList langSetPer) {
            new TranslateSystem().GetDataForPage(memberNo, out newCount, out memberRank, out topMembers, out langSetPer);
        }

        /// <summary>
        /// 返回项目文本
        /// </summary>
        /// <param name="itemno">项目编号</param>
        /// <returns>返回项目文本</returns>
        public static string GetItemText(string itemno)
        {
            return new TranslateSystem().GetItemText(itemno);
        }

        /// <summary>
        /// 修改项目文本
        /// </summary>
        /// <param name="itemno">项目编号</param>
        /// <param name="itemtext">新的项目文本</param>
        /// <returns></returns>
        public static bool EditItem(string itemno, string itemtext)
        {
            return new TranslateSystem().EditItem(itemno, itemtext);
        }

        internal static List<TranslateModel> GetTranslatesByMember(string memberNo, int pageIndex, int pageSize, out int contentCount, out string nickName)
        {
            return new TranslateSystem().GetTranslatesByMember(memberNo, pageIndex, pageSize, out contentCount,out nickName);
        }
    }
}